package com.itheima.service.system.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.itheima.common.utils.UtilFuns;
import com.itheima.dao.system.UserDao;
import com.itheima.domain.system.User;
import com.itheima.service.system.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImpl implements IUserService {

    @Autowired
    private UserDao userDao;

    /**
     * 根据邮箱查询用户
     *
     * @param email
     * @return User
     */
    @Override
    public User findByEmail(String email) {
        return userDao.findByEmail(email);
    }

    /**
     * 查询用户拥有的所有角色
     *
     * @param id
     * @return List<String>
     */
    @Override
    public List<String> findUserRole(String id) {
        return userDao.findUserRole(id);
    }

    /**
     * 查询所有部门列表
     *
     * @param companyId
     * @return PageInfo
     */
    @Override
    public PageInfo findAll(String companyId, int page, int size) {
        //设置PageHelper参数
        PageHelper.startPage(page, size);
        //查询结果集
        List<User> userList = userDao.findAll(companyId);

        return new PageInfo(userList);
    }

    /**
     * 通过id查询部门
     *
     * @param id
     * @return User
     */
    @Override
    public User findById(String id) {
        return userDao.findById(id);
    }

    /**
     * 查询所属企业的所有部门
     *
     * @param companyId
     * @return List<User>
     */
    @Override
    public List<User> findAll(String companyId) {

        return userDao.findAll(companyId);

    }


    /**
     * 保存部门
     *
     * @param user
     * @return null
     */
    @Override
    public void save(User user) {

        //1.生成id
        //String id = UUID.randomUUID().toString().replace("-","").toUpperCase();
        //2.给user赋值
        user.setId(UtilFuns.generateId());
        userDao.save(user);

    }

    /**
     * 更新部门
     *
     * @param user
     * @return null
     */
    @Override
    public void update(User user) {
        userDao.update(user);
    }

    /**
     * 删除部门
     *
     * @param id
     * @return null
     */
    @Override
    public void delete(String id) {
        userDao.delete(id);
    }

    /**
     * 更新用户拥有的角色
     * @param userId
     * @param roleIds
     */
    @Override
    public void saveUserRole(String userId, String[] roleIds) {
        //删除用户所有角色
        userDao.deleteUserRole(userId);
        for (String roleId : roleIds) {
            //给用户添加新的角色
            userDao.saveUserRole(userId,roleId);
        }

    }
}
